package com.smart.community.property.service;

import com.smart.community.commons.result.Result;
import com.smart.community.property.vo.PropertyInfoVO;

import java.util.Map;

/**
 * 物业信息服务接口
 * @author Wu.Liang
 * @since 2025-06-29
 */
public interface IPropertyInfoService {
    
    /**
     * 获取当前用户的物业信息
     * @return 物业信息
     * @throws Exception 统一异常
     */
    Result<PropertyInfoVO> getCurrentUserPropertyInfo() throws Exception;
    
    /**
     * 获取物业公司基本信息
     * @param propertyCompanyId 物业公司ID
     * @return 物业信息
     * @throws Exception 统一异常
     */
    Result<PropertyInfoVO> getPropertyInfo(Long propertyCompanyId) throws Exception;
    
    /**
     * 更新当前用户的物业信息
     * @param propertyInfoVO 物业信息
     * @return 操作结果
     * @throws Exception 统一异常
     */
    Result<Void> updateCurrentUserPropertyInfo(PropertyInfoVO propertyInfoVO) throws Exception;
    
    /**
     * 检查当前用户是否有关联的物业公司
     * @return 是否有关联
     * @throws Exception 统一异常
     */
    Result<Boolean> hasPropertyCompany() throws Exception;
    
    /**
     * 获取物业信息统计
     * @return 统计信息
     * @throws Exception 统一异常
     */
    Result<Map<String, Object>> getPropertyInfoStats() throws Exception;
    
    /**
     * 根据物业公司ID获取物业信息统计
     * @param propertyCompanyId 物业公司ID
     * @return 统计信息
     * @throws Exception 统一异常
     */
    Result<Map<String, Object>> getPropertyInfoStats(Long propertyCompanyId) throws Exception;
} 